1. Field of the Invention
This invention relates to the field of data processing systems. More particularly, this invention relates to the forming of a windowing display in a frame buffer memory within a data processing system.
2. Description of the Prior Art
It is known that some data processing systems use a windowing display. Windowing displays are utilised by systems such as those running the Windows XP operating system produced by Microsoft Corporation and the X Windows system component of operating systems such as Linux. Within such systems, drawing commands are generated by application programs or programs responsible for maintaining the background of the display so as to form within a frame buffer memory pixel values which will when driven to a display result in the desired windowing display being generated. Such windowing displays typically include multiple potentially overlapping windows upon a background. The display order of the windows may be altered and the windows may be changed in size and position under control of user inputs. When such changes are made, it is normal for the window manager program to issue windowing control commands to the application program(s) or background drawing program such that these in turn then issue drawing commands to the graphics system in order that the required writes of new pixel values are made into a frame buffer memory for the windowing display.
FIGS. 1 and 2 of the accompanying drawings illustrate such systems. FIG. 1 illustrates a windowing display with a background image 2 upon which are formed a first window 4 and a second window 6. The second window 6 is higher in the display order than the first window 4 and accordingly when the second window 6 overlies a portion of the first window 4, then that portion of the first window 4 is obscured. User inputs, such as with a computer mouse, may move the second window 6 to a different position within the windowing display as illustrated and this results in the portion of the first window 4 previously overlaid by the second window 6 becoming uncovered whereas other different portions of the first window 4 previously being displayed could now be obscured by the second window 6.
FIG. 2 schematically illustrates a window manager 8 responsive to user inputs to generate windowing control commands which are respectively passed to a first application program 12 which is responsible for the second window 6, a second application program 14 which is responsible for the first window 4 and a background drawing program 16 which is responsible for drawing the background image 2. The windowing control commands may, for example, specify areas of the screen which the window manager 8 instructs one of the first application program 12, the second application program 14 or the background drawing program 16 to draw using their relevant graphical content. The first application program 12, the second application program 14 and the background drawing program 16 then generate drawing commands which are passed to a graphics system. These drawing commands result in the necessary pixel values being generated by the graphics system at the relevant portions within the frame memory. Thus, if the second window 6 is moved such that the first window 4 is now fully visible, then the upper right hand corner of the first window 4 will require drawing by the second application program 14. The windowing control command generated by the window manager 8 issues a windowing control command instructing that the second application program 14 now generates pixel data for the upper right hand corner of the first window 4. The second application program 14 is responsive to this windowing control command to issue drawing commands to the graphics system to generate pixel values for the now uncovered upper right hand corner of its window 4.
The systems and mechanisms illustrated and discussed in relation to FIGS. 1 and 2 are based upon the assumption that when a drawing command is issued to the graphics system, this is substantially immediately acted upon and written to the frame buffer memory storing the pixel values for the current image being displayed. The graphics system is assumed to have access to the frame buffer memory without delay and be able to both read and write pixel values in response to the drawing commands as they are received by the graphics system. Such an arrangement as typically employed by the displays utilises a single-buffered frame buffer memory and immediate mode graphics rendering.
Another form of graphics system which is becoming common utilises tile-based graphics rendering. Such systems are well suited to low cost and low power implementations as they generally are more efficient in the way that memory is accessed. In particular, tile-based systems normally use deferred rendering and operate in a double-buffered mode. In such systems drawing commands are received and analysed to identify which tiles within the overall frame contain pixel values which will be altered by those drawing commands. The frame is divided into a plurality of tiles for this purpose. Thus, the drawing commands are “binned” into tile lists of drawing commands with each tile list containing all those drawing commands for a new frame of image data to be formed that change a pixel value within the tile concerned. When all the drawing commands for a new frame have been generated and binned into the plurality of tile lists, then the tile lists are separately processed to generate the pixel values for those tiles which are stored within a tile memory. When processing of the tile is complete, the contents of the tile memory are written out to the frame buffer memory. When all of the tiles have been processed and the contents of the relevant tile memory written out to the frame buffer, then the new frame data is complete and may be displayed by switching the active frame buffer in the double-buffered arrangement. Such double-buffered tile-based rendering systems are ill suited to supporting windowing displays.
More particularly, in a windowing display when user inputs require modification of the pixel values being displayed then within a tile-based system it would normally be required to first read the contents of each tile from the current frame of pixel values, modify each tile of pixel values and then write each tile of pixel values back into the frame buffer. This reading and writing of all of the pixel values of each tile requires a disadvantageously high number of memory accesses which both reduces speed and increases energy consumption.